repo: Redo ostree_repo_remote_get_url()
authorMatthew Barnes <mbarnes@redhat.com>
Sat, 6 Jun 2015 20:47:15 +0000 (16:47 -0400)
committerGiuseppe Scrivano <gscrivan@redhat.com>
Fri, 26 Jun 2015 09:02:24 +0000 (11:02 +0200)
Make it work like in ostree_repo_pull_with_options(), handling "file://"
remotes and inheriting the "url" option from parent repos if needed.

src/libostree/ostree-repo-pull.c
src/libostree/ostree-repo.c

index e259e344666d079151be83ee72f90115178f4281..11e32a3c72ad3c1abbabd8dff7ef24964f6197b6 100644 (file)
@@ -1604,7 +1604,6 @@ ostree_repo_pull_with_options (OstreeRepo             *self,
   gpointer key, value;
   g_autofree char *remote_key = NULL;
   g_autofree char *path = NULL;
-  g_autofree char *baseurl = NULL;
   g_autofree char *metalink_url_str = NULL;
   g_autoptr(GHashTable) requested_refs_to_fetch = NULL;
   g_autoptr(GHashTable) commits_to_fetch = NULL;
@@ -1670,14 +1669,8 @@ ostree_repo_pull_with_options (OstreeRepo             *self,
 
   pull_data->start_time = g_get_monotonic_time ();
 
-  if (_ostree_repo_remote_name_is_file (remote_name_or_baseurl))
-    {
-      baseurl = g_strdup (remote_name_or_baseurl);
-    }
-  else
-    {
-      pull_data->remote_name = g_strdup (remote_name_or_baseurl);
-    }
+  if (!_ostree_repo_remote_name_is_file (remote_name_or_baseurl))
+    pull_data->remote_name = g_strdup (remote_name_or_baseurl);
 
   if (!ostree_repo_remote_get_gpg_verify (self, remote_name_or_baseurl,
                                           &pull_data->gpg_verify, error))
@@ -1700,19 +1693,10 @@ ostree_repo_pull_with_options (OstreeRepo             *self,
 
   if (!metalink_url_str)
     {
-      if (baseurl == NULL)
-        {
-          if (!_ostree_repo_get_remote_option_inherit (self, remote_name_or_baseurl, "url", &baseurl, error))
-            goto out;
-        }
+      g_autofree char *baseurl = NULL;
 
-      if (baseurl == NULL)
-        {
-          g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
-                       "No \"url\" option in remote \"%s\"",
-                       remote_name_or_baseurl);
-          goto out;
-        }
+      if (!ostree_repo_remote_get_url (self, remote_name_or_baseurl, &baseurl, error))
+        goto out;
 
       pull_data->base_uri = soup_uri_new (baseurl);
 
index aaeffd57e3ef2dd59e51843b83a8cb8951bf26d6..f7c2a4e8963cff99b3a720e7096ae81e1e7608be 100644 (file)
@@ -1206,24 +1206,32 @@ ostree_repo_remote_get_url (OstreeRepo  *self,
                             char       **out_url,
                             GError     **error)
 {
-  local_cleanup_remote OstreeRemote *remote = NULL;
   g_autofree char *url = NULL;
   gboolean ret = FALSE;
 
   g_return_val_if_fail (name != NULL, FALSE);
 
-  remote = ost_repo_get_remote (self, name, error);
+  if (_ostree_repo_remote_name_is_file (name))
+    {
+      url = g_strdup (name);
+    }
+  else
+    {
+      if (!_ostree_repo_get_remote_option_inherit (self, name, "url", &url, error))
+        goto out;
 
-  if (remote == NULL)
-    goto out;
+      if (url == NULL)
+        {
+          g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
+                       "No \"url\" option in remote \"%s\"", name);
+          goto out;
+        }
+    }
 
-  url = g_key_file_get_string (remote->options, remote->group, "url", error);
+  if (out_url != NULL)
+    *out_url = g_steal_pointer (&url);
 
-  if (url != NULL)
-    {
-      gs_transfer_out_value (out_url, &url);
-      ret = TRUE;
-    }
+  ret = TRUE;
 
  out:
   return ret;